﻿using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using Salamanca.DataAccess;
using Salamanca.DataAccess.Collections;

namespace Sevesc.Sps.DomainModel
{



    ////////////////////////////////////////////////////////////////////////////
    ///
    /// <summary>Interface implemented by a <see cref="IDataMapper">Data Mapper</see> for the <see cref="LieuDeService" /> entity.</summary>
    ///
    ////////////////////////////////////////////////////////////////////////////

    public partial interface ILieuDeServiceMapper:
        IDataMapper
    {
        /// <summary>Returns the <see cref="LieuDeService" /> with the specified key.</summary>
        LieuDeService Find(LieuDeService.PrimaryKey key, DataMapperCollection dataMappers);
        /// <summary>Returns all the <see cref="LieuDeService" /> instances.</summary>
        DomainEntityKeyedCollection<LieuDeService> FindAll(DataMapperCollection dataMappers);
        /// <summary>Returns the <see cref="LieuDeService" /> instances that are related to the specified entity.</summary>
        DomainEntityKeyedCollection<LieuDeService> FindByClient(Personne entity, DataMapperCollection dataMappers);
        /// <summary>Returns the <see cref="LieuDeService" /> instances that are related to the specified entity.</summary>
        DomainEntityKeyedCollection<LieuDeService> FindByAdresse(Adresse entity, DataMapperCollection dataMappers);
        /// <summary>Returns the <see cref="LieuDeService" /> instances that are related to the specified entity.</summary>
        DomainEntityKeyedCollection<LieuDeService> FindByContrats(Contrat entity, DataMapperCollection dataMappers);
    }



    ////////////////////////////////////////////////////////////////////////////
    ///
    /// <summary>Interface implemented by a <see cref="IDataMapper">Data Mapper</see> for the <see cref="LieuxDeServiceContrats" /> association entity.</summary>
    ///
    ////////////////////////////////////////////////////////////////////////////

    internal partial interface ILieuxDeServiceContratsMapper:
        IDataMapper
    {

        /// <summary>Returns the <see cref="LieuxDeServiceContrats" /> association instances that are related to the specified entity.</summary>
        DomainEntityKeyedCollection<LieuxDeServiceContrats> FindByContrat(Contrat entity, DataMapperCollection dataMappers);
        /// <summary>Returns the <see cref="LieuxDeServiceContrats" /> association instances that are related to the specified entity.</summary>
        DomainEntityKeyedCollection<LieuxDeServiceContrats> FindByLieuDeService(LieuDeService entity, DataMapperCollection dataMappers);
    }



    ////////////////////////////////////////////////////////////////////////////
    ///
    /// <summary>Interface implemented by a <see cref="IDataMapper">Data Mapper</see> for the <see cref="Contrat" /> entity.</summary>
    ///
    ////////////////////////////////////////////////////////////////////////////

    public partial interface IContratMapper:
        IDataMapper
    {
        /// <summary>Returns the <see cref="Contrat" /> with the specified key.</summary>
        Contrat Find(Contrat.PrimaryKey key, DataMapperCollection dataMappers);
        /// <summary>Returns all the <see cref="Contrat" /> instances.</summary>
        DomainEntityKeyedCollection<Contrat> FindAll(DataMapperCollection dataMappers);
        /// <summary>Returns the <see cref="Contrat" /> instances that are related to the specified entity.</summary>
        DomainEntityKeyedCollection<Contrat> FindByLieuxDeService(LieuDeService entity, DataMapperCollection dataMappers);
    }



    ////////////////////////////////////////////////////////////////////////////
    ///
    /// <summary>Interface implemented by a <see cref="IDataMapper">Data Mapper</see> for the <see cref="Convention" /> entity.</summary>
    ///
    ////////////////////////////////////////////////////////////////////////////

    public partial interface IConventionMapper:
        IDataMapper
    {
        /// <summary>Returns the <see cref="Convention" /> with the specified key.</summary>
        Convention Find(Convention.PrimaryKey key, DataMapperCollection dataMappers);
        /// <summary>Returns all the <see cref="Convention" /> instances.</summary>
        DomainEntityKeyedCollection<Convention> FindAll(DataMapperCollection dataMappers);
        /// <summary>Returns the <see cref="Convention" /> instances that are related to the specified entity.</summary>
        DomainEntityKeyedCollection<Convention> FindByLieuDeService(LieuDeService entity, DataMapperCollection dataMappers);
        /// <summary>Returns the <see cref="Convention" /> instances that are related to the specified entity.</summary>
        DomainEntityKeyedCollection<Convention> FindByGestionnaire(Personne entity, DataMapperCollection dataMappers);
    }



    ////////////////////////////////////////////////////////////////////////////
    ///
    /// <summary>Interface implemented by a <see cref="IDataMapper">Data Mapper</see> for the <see cref="Personne" /> entity.</summary>
    ///
    ////////////////////////////////////////////////////////////////////////////

    public partial interface IPersonneMapper:
        IDataMapper
    {
        /// <summary>Returns the <see cref="Personne" /> with the specified key.</summary>
        Personne Find(Personne.PrimaryKey key, DataMapperCollection dataMappers);
        /// <summary>Returns all the <see cref="Personne" /> instances.</summary>
        DomainEntityKeyedCollection<Personne> FindAll(DataMapperCollection dataMappers);
        /// <summary>Returns the <see cref="Personne" /> instances that are related to the specified entity.</summary>
        DomainEntityKeyedCollection<Personne> FindByAdresse(Adresse entity, DataMapperCollection dataMappers);
    }



    ////////////////////////////////////////////////////////////////////////////
    ///
    /// <summary>Interface implemented by a <see cref="IDataMapper">Data Mapper</see> for the <see cref="Compteur" /> entity.</summary>
    ///
    ////////////////////////////////////////////////////////////////////////////

    public partial interface ICompteurMapper:
        IDataMapper
    {
        /// <summary>Returns the <see cref="Compteur" /> with the specified key.</summary>
        Compteur Find(Compteur.PrimaryKey key, DataMapperCollection dataMappers);
        /// <summary>Returns all the <see cref="Compteur" /> instances.</summary>
        DomainEntityKeyedCollection<Compteur> FindAll(DataMapperCollection dataMappers);
        /// <summary>Returns the <see cref="Compteur" /> instances that are related to the specified entity.</summary>
        DomainEntityKeyedCollection<Compteur> FindByLieuDeService(LieuDeService entity, DataMapperCollection dataMappers);
        /// <summary>Returns the <see cref="Compteur" /> instances that are related to the specified entity.</summary>
        DomainEntityKeyedCollection<Compteur> FindByBranchement(Branchement entity, DataMapperCollection dataMappers);
        /// <summary>Returns the <see cref="Compteur" /> instances that are related to the specified entity.</summary>
        DomainEntityKeyedCollection<Compteur> FindByAdresse(Adresse entity, DataMapperCollection dataMappers);
    }



    ////////////////////////////////////////////////////////////////////////////
    ///
    /// <summary>Interface implemented by a <see cref="IDataMapper">Data Mapper</see> for the <see cref="Branchement" /> entity.</summary>
    ///
    ////////////////////////////////////////////////////////////////////////////

    public partial interface IBranchementMapper:
        IDataMapper
    {
        /// <summary>Returns the <see cref="Branchement" /> with the specified key.</summary>
        Branchement Find(Branchement.PrimaryKey key, DataMapperCollection dataMappers);
        /// <summary>Returns all the <see cref="Branchement" /> instances.</summary>
        DomainEntityKeyedCollection<Branchement> FindAll(DataMapperCollection dataMappers);
        /// <summary>Returns the <see cref="Branchement" /> instances that are related to the specified entity.</summary>
        DomainEntityKeyedCollection<Branchement> FindByPersonne(Personne entity, DataMapperCollection dataMappers);
        /// <summary>Returns the <see cref="Branchement" /> instances that are related to the specified entity.</summary>
        DomainEntityKeyedCollection<Branchement> FindByAdresse(Adresse entity, DataMapperCollection dataMappers);
    }



    ////////////////////////////////////////////////////////////////////////////
    ///
    /// <summary>Interface implemented by a <see cref="IDataMapper">Data Mapper</see> for the <see cref="Volume" /> entity.</summary>
    ///
    ////////////////////////////////////////////////////////////////////////////

    public partial interface IVolumeMapper:
        IDataMapper
    {
        /// <summary>Returns the <see cref="Volume" /> with the specified key.</summary>
        Volume Find(Volume.PrimaryKey key, DataMapperCollection dataMappers);
        /// <summary>Returns all the <see cref="Volume" /> instances.</summary>
        DomainEntityKeyedCollection<Volume> FindAll(DataMapperCollection dataMappers);
        /// <summary>Returns the <see cref="Volume" /> instances that are related to the specified entity.</summary>
        DomainEntityKeyedCollection<Volume> FindByCompteur(Compteur entity, DataMapperCollection dataMappers);
    }



    ////////////////////////////////////////////////////////////////////////////
    ///
    /// <summary>Interface implemented by a <see cref="IDataMapper">Data Mapper</see> for the <see cref="Equipement" /> entity.</summary>
    ///
    ////////////////////////////////////////////////////////////////////////////

    public partial interface IEquipementMapper:
        IDataMapper
    {
        /// <summary>Returns the <see cref="Equipement" /> with the specified key.</summary>
        Equipement Find(Equipement.PrimaryKey key, DataMapperCollection dataMappers);
        /// <summary>Returns all the <see cref="Equipement" /> instances.</summary>
        DomainEntityKeyedCollection<Equipement> FindAll(DataMapperCollection dataMappers);
        /// <summary>Returns the <see cref="Equipement" /> instances that are related to the specified entity.</summary>
        DomainEntityKeyedCollection<Equipement> FindByCompteur(Compteur entity, DataMapperCollection dataMappers);
    }



    ////////////////////////////////////////////////////////////////////////////
    ///
    /// <summary>Interface implemented by a <see cref="IDataMapper">Data Mapper</see> for the <see cref="Dossier" /> entity.</summary>
    ///
    ////////////////////////////////////////////////////////////////////////////

    public partial interface IDossierMapper:
        IDataMapper
    {
        /// <summary>Returns the <see cref="Dossier" /> with the specified key.</summary>
        Dossier Find(Dossier.PrimaryKey key, DataMapperCollection dataMappers);
        /// <summary>Returns all the <see cref="Dossier" /> instances.</summary>
        DomainEntityKeyedCollection<Dossier> FindAll(DataMapperCollection dataMappers);
        /// <summary>Returns the <see cref="Dossier" /> instances that are related to the specified entity.</summary>
        DomainEntityKeyedCollection<Dossier> FindByLieuDeService(LieuDeService entity, DataMapperCollection dataMappers);
        /// <summary>Returns the <see cref="Dossier" /> instances that are related to the specified entity.</summary>
        DomainEntityKeyedCollection<Dossier> FindByProgramme(Programme entity, DataMapperCollection dataMappers);
    }



    ////////////////////////////////////////////////////////////////////////////
    ///
    /// <summary>Interface implemented by a <see cref="IDataMapper">Data Mapper</see> for the <see cref="Programme" /> entity.</summary>
    ///
    ////////////////////////////////////////////////////////////////////////////

    public partial interface IProgrammeMapper:
        IDataMapper
    {
        /// <summary>Returns the <see cref="Programme" /> with the specified key.</summary>
        Programme Find(Programme.PrimaryKey key, DataMapperCollection dataMappers);
        /// <summary>Returns all the <see cref="Programme" /> instances.</summary>
        DomainEntityKeyedCollection<Programme> FindAll(DataMapperCollection dataMappers);
    }



    ////////////////////////////////////////////////////////////////////////////
    ///
    /// <summary>Interface implemented by a <see cref="IDataMapper">Data Mapper</see> for the <see cref="Etape" /> entity.</summary>
    ///
    ////////////////////////////////////////////////////////////////////////////

    public partial interface IEtapeMapper:
        IDataMapper
    {
        /// <summary>Returns the <see cref="Etape" /> with the specified key.</summary>
        Etape Find(Etape.PrimaryKey key, DataMapperCollection dataMappers);
        /// <summary>Returns all the <see cref="Etape" /> instances.</summary>
        DomainEntityKeyedCollection<Etape> FindAll(DataMapperCollection dataMappers);
        /// <summary>Returns the <see cref="Etape" /> instances that are related to the specified entity.</summary>
        DomainEntityKeyedCollection<Etape> FindByDossier(Dossier entity, DataMapperCollection dataMappers);
    }



    ////////////////////////////////////////////////////////////////////////////
    ///
    /// <summary>Interface implemented by a <see cref="IDataMapper">Data Mapper</see> for the <see cref="Action" /> entity.</summary>
    ///
    ////////////////////////////////////////////////////////////////////////////

    public partial interface IActionMapper:
        IDataMapper
    {
        /// <summary>Returns the <see cref="Action" /> with the specified key.</summary>
        Action Find(Action.PrimaryKey key, DataMapperCollection dataMappers);
        /// <summary>Returns all the <see cref="Action" /> instances.</summary>
        DomainEntityKeyedCollection<Action> FindAll(DataMapperCollection dataMappers);
        /// <summary>Returns the <see cref="Action" /> instances that are related to the specified entity.</summary>
        DomainEntityKeyedCollection<Action> FindByEtape(Etape entity, DataMapperCollection dataMappers);
        /// <summary>Returns the <see cref="Action" /> instances that are related to the specified entity.</summary>
        DomainEntityKeyedCollection<Action> FindByDocuments(Document entity, DataMapperCollection dataMappers);
    }



    ////////////////////////////////////////////////////////////////////////////
    ///
    /// <summary>Interface implemented by a <see cref="IDataMapper">Data Mapper</see> for the <see cref="ActionsDocuments" /> association entity.</summary>
    ///
    ////////////////////////////////////////////////////////////////////////////

    internal partial interface IActionsDocumentsMapper:
        IDataMapper
    {

        /// <summary>Returns the <see cref="ActionsDocuments" /> association instances that are related to the specified entity.</summary>
        DomainEntityKeyedCollection<ActionsDocuments> FindByDocument(Document entity, DataMapperCollection dataMappers);
        /// <summary>Returns the <see cref="ActionsDocuments" /> association instances that are related to the specified entity.</summary>
        DomainEntityKeyedCollection<ActionsDocuments> FindByAction(Action entity, DataMapperCollection dataMappers);
    }



    ////////////////////////////////////////////////////////////////////////////
    ///
    /// <summary>Interface implemented by a <see cref="IDataMapper">Data Mapper</see> for the <see cref="Document" /> entity.</summary>
    ///
    ////////////////////////////////////////////////////////////////////////////

    public partial interface IDocumentMapper:
        IDataMapper
    {
        /// <summary>Returns the <see cref="Document" /> with the specified key.</summary>
        Document Find(Document.PrimaryKey key, DataMapperCollection dataMappers);
        /// <summary>Returns all the <see cref="Document" /> instances.</summary>
        DomainEntityKeyedCollection<Document> FindAll(DataMapperCollection dataMappers);
        /// <summary>Returns the <see cref="Document" /> instances that are related to the specified entity.</summary>
        DomainEntityKeyedCollection<Document> FindByActions(Action entity, DataMapperCollection dataMappers);
    }



    ////////////////////////////////////////////////////////////////////////////
    ///
    /// <summary>Interface implemented by a <see cref="IDataMapper">Data Mapper</see> for the <see cref="Intervention" /> entity.</summary>
    ///
    ////////////////////////////////////////////////////////////////////////////

    public partial interface IInterventionMapper:
        IDataMapper
    {
        /// <summary>Returns the <see cref="Intervention" /> with the specified key.</summary>
        Intervention Find(Action.PrimaryKey key, DataMapperCollection dataMappers);
        /// <summary>Returns all the <see cref="Intervention" /> instances.</summary>
        DomainEntityKeyedCollection<Intervention> FindAll(DataMapperCollection dataMappers);
        /// <summary>Returns the <see cref="Intervention" /> instances that are related to the specified entity.</summary>
        DomainEntityKeyedCollection<Intervention> FindByEquipement(Equipement entity, DataMapperCollection dataMappers);
    }



    ////////////////////////////////////////////////////////////////////////////
    ///
    /// <summary>Interface implemented by a <see cref="IDataMapper">Data Mapper</see> for the <see cref="Adresse" /> entity.</summary>
    ///
    ////////////////////////////////////////////////////////////////////////////

    public partial interface IAdresseMapper:
        IDataMapper
    {
        /// <summary>Returns the <see cref="Adresse" /> with the specified key.</summary>
        Adresse Find(Adresse.PrimaryKey key, DataMapperCollection dataMappers);
        /// <summary>Returns all the <see cref="Adresse" /> instances.</summary>
        DomainEntityKeyedCollection<Adresse> FindAll(DataMapperCollection dataMappers);
        /// <summary>Returns the <see cref="Adresse" /> instances that are related to the specified entity.</summary>
        DomainEntityKeyedCollection<Adresse> FindByVoie(Voie entity, DataMapperCollection dataMappers);
    }



    ////////////////////////////////////////////////////////////////////////////
    ///
    /// <summary>Interface implemented by a <see cref="IDataMapper">Data Mapper</see> for the <see cref="Voie" /> entity.</summary>
    ///
    ////////////////////////////////////////////////////////////////////////////

    public partial interface IVoieMapper:
        IDataMapper
    {
        /// <summary>Returns the <see cref="Voie" /> with the specified key.</summary>
        Voie Find(Voie.PrimaryKey key, DataMapperCollection dataMappers);
        /// <summary>Returns all the <see cref="Voie" /> instances.</summary>
        DomainEntityKeyedCollection<Voie> FindAll(DataMapperCollection dataMappers);
        /// <summary>Returns the <see cref="Voie" /> instances that are related to the specified entity.</summary>
        DomainEntityKeyedCollection<Voie> FindByCommune(Commune entity, DataMapperCollection dataMappers);
    }



    ////////////////////////////////////////////////////////////////////////////
    ///
    /// <summary>Interface implemented by a <see cref="IDataMapper">Data Mapper</see> for the <see cref="Commune" /> entity.</summary>
    ///
    ////////////////////////////////////////////////////////////////////////////

    public partial interface ICommuneMapper:
        IDataMapper
    {
        /// <summary>Returns the <see cref="Commune" /> with the specified key.</summary>
        Commune Find(Commune.PrimaryKey key, DataMapperCollection dataMappers);
        /// <summary>Returns all the <see cref="Commune" /> instances.</summary>
        DomainEntityKeyedCollection<Commune> FindAll(DataMapperCollection dataMappers);
    }



    ////////////////////////////////////////////////////////////////////////////
    ///
    /// <summary>Interface implemented by a <see cref="IDataMapper">Data Mapper</see> for the <see cref="Bordereau" /> entity.</summary>
    ///
    ////////////////////////////////////////////////////////////////////////////

    public partial interface IBordereauMapper:
        IDataMapper
    {
        /// <summary>Returns the <see cref="Bordereau" /> with the specified key.</summary>
        Bordereau Find(Bordereau.PrimaryKey key, DataMapperCollection dataMappers);
        /// <summary>Returns all the <see cref="Bordereau" /> instances.</summary>
        DomainEntityKeyedCollection<Bordereau> FindAll(DataMapperCollection dataMappers);
    }



    ////////////////////////////////////////////////////////////////////////////
    ///
    /// <summary>Interface implemented by a <see cref="IDataMapper">Data Mapper</see> for the <see cref="Contact" /> entity.</summary>
    ///
    ////////////////////////////////////////////////////////////////////////////

    public partial interface IContactMapper:
        IDataMapper
    {
        /// <summary>Returns the <see cref="Contact" /> with the specified key.</summary>
        Contact Find(Contact.PrimaryKey key, DataMapperCollection dataMappers);
        /// <summary>Returns all the <see cref="Contact" /> instances.</summary>
        DomainEntityKeyedCollection<Contact> FindAll(DataMapperCollection dataMappers);
    }
}

